package testPackage;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
import org.testng.annotations.Test;

/**
 * step by step 04 等待Selenium中的页面加载
 * 前提知识点：
 * 1、触发页面加载的元素要等到DOM被加载后才将控制权返回给驱动程序
 * 2、处理基于ajax的元素或即使在页面加载之后也加载的动态元素时，
 * 我们可能不得不引入等待时间
 * 3、在某些情况下，我们处理的元素可能在页面加载时或执行某些触发操作后可见，
 * 但需要花费一些时间才能进行交互。
 * 实现方法：使用显式等待，等待页面加载
 */
public class SeleniumOther03 {
    @Test
    public void waitTest(){
        String str = "D:\\\\Enviroments\\\\geckodriver-v0.26.0-win64\\\\chromedriver.exe";
        System.setProperty("webdriver.chrome.driver",str);
        WebDriver driver = new ChromeDriver();
        driver.get("https://tb.alicdn.com/snapshot/index.html");
        //等待页面加载
        WebDriverWait wait = new WebDriverWait(driver,20);
        wait.until(ExpectedConditions.elementToBeClickable(/*定位最后一个元素*/
                By.xpath("//*[@id=\"J_TSearchForm\"]/div[1]/button")));
    }
}
